package com.example.stgv;

import android.app.Activity;
import android.database.Cursor;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class AddClass extends Activity {
	Button btnThem, btnHuy, btnSua, btnXoa;
	EditText txtTenLop, txtSiSo, txtMaLop;
	private DBHelper db;
	LopHocsData lop = new LopHocsData();

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_add_class);
		txtMaLop = (EditText) findViewById(R.id.addclass_txtmalop);
		// txtNamHoc = (EditText) findViewById(R.id.addclass_txtNienKhoa);
		txtTenLop = (EditText) findViewById(R.id.addclass_txtTenLop);
		txtSiSo = (EditText) findViewById(R.id.addclass_txtSiSo);

		btnThem = (Button) findViewById(R.id.addclass_btn_Add);

		btnThem.setOnClickListener(new View.OnClickListener() {

			@Override
			public void onClick(View v) {
				if (checkData()) {
					if (insertLop()) {
						refress();
					}
				}
				txtTenLop.requestFocus();
			}
		});

		btnSua = (Button) findViewById(R.id.addclass_btn_Edit);
		btnSua.setOnClickListener(new View.OnClickListener() {

			@Override
			public void onClick(View arg0) {
				Log.d("Sua", btnSua.getText() + "=" + R.string.button_sua);
/*				if (btnSua.getText().toString().equals("Sửa")) {
					btnSua.setText(R.string.button_luu);
				} else {*/
					if (checkData()) {
						if (updateLop()) {
							refress();
							//btnSua.setText(R.string.button_sua);
						}
					}
				//}
				txtTenLop.requestFocus();
			}
		});

		btnXoa = (Button) findViewById(R.id.addclass_btn_Xoa);
		btnXoa.setOnClickListener(new View.OnClickListener() {

			@Override
			public void onClick(View v) {
				if (deletelop()) {
					if (insertLop()) {
						refress();
					}
				}
				txtTenLop.requestFocus();
			}
		});

		btnHuy = (Button) findViewById(R.id.addclass_btn_Canel);
		btnHuy.setOnClickListener(new View.OnClickListener() {

			@Override
			public void onClick(View v) {
				finish();
			}
		});

	}

	protected boolean deletelop() {
		String[] whereArgs = new String[1];
		whereArgs[0] = txtTenLop.getText().toString().trim();
		db = new DBHelper(AddClass.this);
		Cursor cur = db.runAllDateRQ("select malop from lop where tenlop =?",
				whereArgs);
		Log.d("Thong bao", "da truy van.");
		if (cur != null && cur.getCount() > 0) {
			Log.d("Thong bao", "co lop");
			cur.moveToFirst();
			whereArgs[0] = cur.getString(0);
			Cursor cur1 = db.runAllDateRQ(
					"select malop from hocsinh where malop =?", whereArgs);
			if (cur1 != null && cur1.getCount() > 0) {
				Log.d("Thong bao", "da co hoc sinh " + whereArgs[0]);
				Toast.makeText(this,
						" Không xóa được \n Đã có học sinh trong lop này. ",
						Toast.LENGTH_SHORT).show();
				return false;
			} else {
				long deletelop = db.deleteData("lop","malop = ?", whereArgs);
				Log.d("Thong bao", "Da xoa lop" + whereArgs[0]);
				Toast.makeText(this, " Đã xóa lớp " + whereArgs[0],
						Toast.LENGTH_SHORT).show();
			}
			cur1.close();
			cur.close();
		} else {
			Toast.makeText(this, "Lớp này không tồn tại ", Toast.LENGTH_SHORT)
					.show();
			return false;
		}
		return true;
	}

	protected void refress() {
		txtTenLop.requestFocus();
		txtTenLop.setText("");
		txtSiSo.setText("");

	}

	protected boolean updateLop() {

		try {
			int nParam = 2;
			String[] fields = new String[nParam];
			String[] values = new String[nParam];
			String[] whereArgs = new String[1];

			// fields[0] = lop.getKEY_NAMHOC();
			fields[0] = lop.getKEY_TENLOP();
			fields[1] = lop.getKEY_SISO();

			// whereArgs[0] = txtNamHoc.getText().toString().trim();
			whereArgs[0] = txtTenLop.getText().toString().trim();

			// values[0] = txtNamHoc.getText().toString().trim();
			values[0] = txtTenLop.getText().toString().trim();
			values[1] = txtSiSo.getText().toString().trim();
			Log.d("Thong bao", "Tien hanh update ");
			db = new DBHelper(AddClass.this);
			Cursor cur = db
					.runAllDateRQ(
							"select malop, tenlop from lop where tenlop =?",
							whereArgs);

			if (cur != null && cur.getCount() > 0) {
				// duplicate found
				cur.moveToFirst();
				whereArgs[0] = cur.getString(0);
				long cur1 = db.UpdateData(lop.getDATABASE_TABLE_LOP(), nParam,
						fields, values, "malop = ?", whereArgs);
				if (cur1 > 0) {
					Log.d("Thong bao", "Tien hanh update " + values[1]);
					Toast.makeText(this, "Sửa thành công. ", Toast.LENGTH_SHORT)
							.show();
					txtTenLop.requestFocus();
				}
				cur.close();
				return true;
			} else {
				Toast.makeText(this, "Lớp này không tồn tại ",
						Toast.LENGTH_SHORT).show();
				return false;
			}
		} catch (Exception e) {
			Log.d("Update", "Không thể update. ");
			Toast.makeText(this, "Lỗi sai dữ liệu.", Toast.LENGTH_SHORT).show();
			return false;
		}
	}

	private Boolean insertLop() {

		try {
			int nParam = 2;
			String[] fields = new String[nParam];
			String[] values = new String[nParam];
			String[] wherearg = new String[1];

			fields[0] = lop.getKEY_TENLOP();
			fields[1] = lop.getKEY_SISO();

			values[0] = txtTenLop.getText().toString().trim();
			values[1] = txtSiSo.getText().toString().trim();

			wherearg[0] = txtTenLop.getText().toString().trim();

			db = new DBHelper(AddClass.this);
			Cursor cur = db
					.runAllDateRQ(
							"select tenlop from lop where tenlop =?",
							wherearg);
			if (cur != null && cur.getCount() > 0) {
				// duplicate found
				Log.d("Duplicate", "Trung malop " + values[0]);
				Toast.makeText(this, "Tên lớp đã có. ", Toast.LENGTH_SHORT)
						.show();
				Log.d("Duplicate", "Trung malop " + values[0]);
				txtTenLop.requestFocus();
				cur.close();
				return false;
			} else {
				long a = db.insertData(lop.getDATABASE_TABLE_LOP(), nParam,
						fields, values);
				cur.close();
				Cursor cur1 = db.getAllData(lop.getDATABASE_TABLE_LOP(),
						lop.getKEY_MALOP());
				cur1.moveToLast();
				db.close();
				if (a >= 0) {
					Toast.makeText(this,
							"Mã lớp vừa thêm là:" + cur1.getString(0),
							Toast.LENGTH_SHORT).show();
					return true;
				} else {
					Toast.makeText(this,
							"Không thêm được" + lop.getKEY_MALOP(),
							Toast.LENGTH_SHORT).show();
					return false;
				}
			}

		} catch (Exception e) {
			Log.d("Insert", "Không thể insert. ");
			Toast.makeText(this, "Lỗi sai dữ liệu.", Toast.LENGTH_SHORT).show();
			return false;
		}
	}

	public Boolean checkData() {
		if (txtSiSo.getText().toString().isEmpty()
				|| txtTenLop.getText().toString().isEmpty()) {
			Toast.makeText(this, "Thiếu dữ liệu.", Toast.LENGTH_SHORT).show();
			return false;
		}
		return true;
	}
}
